/**
 * NIO Server端的思路：http://naotu.baidu.com/file/a1980fcd61a21bb1cc495de73d6d0168?token=4b79d665b7df8c85
 * <p>
 * 优点：
 * ①客户端发起连接的操作是异步的，可以通过在多路复用器上注册OP_CONNECT事件等待后续结果。而不是在连接的时候被同步阻塞。
 * ②SocketChannel的读写操作都是异步的，如果没有可读或者可写的数据将直接返回。这样I/O通信线程可以处理其他链路，不会阻塞在这里等待读写完成。
 * ③线程模型优化，JDK1.7后升级了NIO2.0类库，在Linux等操作系统上是通过epoll方式实现，取消了连接句柄数上限（理论上最大值跟系统句柄数上限或单个进程的句柄数上限有关，但是这个值很难触碰到）
 * 这意味着，一个独立的selector线程便能接入成千上万个客户端连接，并且不会导致资源耗尽或者性能线性下降的问题。因此，NIO非常适合做高性能、高负载的网络服务器。
 *
 * 弊端： ①编程难度大幅提升、如果需要继续处理'半包读' '半包写'等问题，代码将变得更加复杂。
 *
 * @author chentl
 * @version V1.0
 * @Project leisurely
 * @Title TimeServer.java
 * @Description 伪异步I/O server端
 * @Package com.echo.ioex.wio.server
 * @date 2020/9/18 12:44 下午
 * @Copyright: 陈泰来の学习档案 .
 */
package com.echo.ioex.nio.server;

import com.echo.ioex.nio.server.ext.MultiplexerTimeServer;

public class NioTimerServer {

    public static void main(String[] args) {

        int port = 9999;
        if (args != null && args.length > 0) {
            try {
                port = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
                //默认值
            }
        }

        MultiplexerTimeServer timeServer = new MultiplexerTimeServer(port);
        new Thread(timeServer,"NIO-MultiplexerTimeServer-001").start();


    }


}
